home *** CD-ROM | disk | FTP | other *** search
/ SPACE 2 / SPACE - Library 2 - Volume 1.iso / music / 55 / applic / memlist.cmd < prev    next >
OS/2 REXX Batch file  |  1986-09-18  |  4KB  |  183 lines

  1. *...
  2. *...program to print alphabetical membership list
  3. *...
  4.  
  5. USE MEMBERS INDEX MEMBERS
  6.  
  7. *...next statement turns off command line area
  8. SET TALK OFF
  9.  
  10. DO WHILE T
  11.  
  12. ERASE
  13.  
  14. @5,0
  15. TEXT
  16.      PROGRAM NOT FULLY ERROR TRAPPED!
  17.      
  18.      If you choose to output the report to a file, make sure that
  19.        you have a disk in the drive you specify, and that it has
  20.        some room on it for the report!
  21. ENDTEXT
  22.  
  23. @15,6
  24. ACCEPT "Send list to Printer or File? (P/F) " TO CHOICE PICTURE "!"
  25.  
  26. IF CHOICE="P" OR CHOICE="F"
  27.   EXIT
  28. ENDIF
  29.  
  30. ENDDO
  31.  
  32. SET PRINT ON
  33.  
  34. *...print message on screen
  35. ERASE
  36.  
  37. IF CHOICE="P"
  38.   @5,0 SAY "Printing Membership List..."
  39.   ELSE
  40.   @5,0
  41.   ACCEPT "Print to what filespec? (ex. B:MEMLIST.TXT)" TO FNAME
  42.   SET PRINT TO &FNAME
  43.   ERASE
  44.   @5,0 SAY "Printing Membership List to "+FNAME
  45.   @0,0
  46. ENDIF
  47.  
  48. SET CONSOLE OFF
  49.  
  50. *...set up page format and printer
  51. *...line count is NET of top and bottom margins,
  52. *...AND is net of heading lines
  53. *...line count=58=66-top(3)-bottom(3)-headings(2)
  54. SET TOPFORM
  55. SET LINE COUNT TO 58
  56. SET HEADING TO 'ALPHABETICAL LIST OF H.A.S.T.E. MEMBERS'+SPACE(23)+;
  57.   DTOC(DATE())+SPACE(3)+'PAGE '+STR(PAGENO(1),2)
  58. SET PAGENO TO 1
  59. *...set line 2 of heading to 80 characters of underline character
  60. SET HEADING2 TO DUPCHAR(45,80)
  61. SET FOOTER TO
  62.  
  63. *...width of report is two names across, 38 characters per name
  64. *...this includes spaces between columns
  65. WIDTH=38
  66.  
  67. GO TOP
  68.  
  69. *...start of major program loop
  70. DO WHILE NOT EOF
  71.  
  72. *...start of each line is string of six blanks, providing left margin!
  73. *...could just use SET LEFT MARGIN, but that would throw off centering
  74. *...of heading/footer lines
  75. STORE '      ' TO L1
  76. STORE '      ' TO L2
  77. STORE '      ' TO L3
  78. STORE '      ' TO L4
  79. *...inloop is counter for number of names across
  80. STORE 1 TO INLOOP
  81.  
  82. DO WHILE INLOOP <= 2 AND NOT EOF
  83.  
  84. IF INIT<>' '
  85.    STORE TRIM(FIRST)+' '+INIT+'. '+TRIM(LAST) TO LINE1
  86.      IF INLOOP=1
  87.        L1=SUBSTR(L1+LINE1+SPACE(WIDTH),1,WIDTH)
  88.        ELSE
  89.        L1=L1+LINE1  
  90.      ENDIF
  91. ENDIF
  92.  
  93. IF FIRST=' ' AND LAST<>' '
  94.   STORE LAST TO LINE1
  95.      IF INLOOP=1 
  96.        L1=SUBSTR(L1+LINE1+SPACE(WIDTH),1,WIDTH)
  97.        ELSE
  98.        L1=L1+LINE1
  99.      ENDIF 
  100. ENDIF
  101.  
  102. IF FIRST<>' ' AND INIT=' '
  103.   STORE TRIM(FIRST)+' '+LAST TO LINE1
  104.      IF INLOOP=1
  105.        L1=SUBSTR(L1+LINE1+SPACE(WIDTH),1,WIDTH)
  106.        ELSE
  107.        L1=L1+LINE1
  108.      ENDIF    
  109. ENDIF
  110.  
  111. IF ADDRESS1 <> ' ' AND INLOOP = 1
  112.   STORE ADDRESS1 TO LINE2
  113.   L2=SUBSTR(L2+LINE2+SPACE(WIDTH),1,WIDTH)
  114. ENDIF
  115.  
  116. IF ADDRESS1 <> ' ' AND INLOOP = 2
  117.   STORE ADDRESS1 TO LINE2
  118.     IF L2<>'      '
  119.       L2=L2+LINE2
  120.       ELSE
  121.       L2=SPACE(WIDTH)+LINE2
  122.     ENDIF
  123. ENDIF
  124.  
  125. STORE ADDRESS2 TO LINE3
  126.   IF INLOOP=1
  127.     L3=SUBSTR(L3+LINE3+SPACE(WIDTH),1,WIDTH)
  128.     ELSE
  129.     L3=L3+LINE3
  130.   ENDIF
  131.  
  132. STORE TRIM(CITY)+', '+STATE+' '+ZIP TO LINE4
  133.   IF INLOOP=1
  134.     L4=SUBSTR(L4+LINE4+SPACE(WIDTH),1,WIDTH)
  135.     ELSE
  136.     L4=L4+LINE4
  137.   ENDIF
  138.  
  139. SKIP
  140.  
  141. INLOOP=INLOOP+1
  142.  
  143. ENDDO
  144.  
  145. *...actual code that prints list
  146. IF PROW() = 1
  147.   ?
  148. ENDIF
  149.  
  150. *...if not enough room to fit a whole name & address at bottom of
  151. *...page, do formfeed and continue on next page
  152.  
  153. IF  PROW() >= 55
  154.   FORMFEED
  155. ENDIF
  156.  
  157. ? L1
  158. IF LEN(L2) > 7
  159.   ? L2
  160. ENDIF
  161. ? L3
  162. ? L4
  163.  
  164. IF PROW() <= 57
  165.   ?
  166. ENDIF
  167.  
  168. ENDDO
  169.  
  170. EJECT
  171.  
  172. CLOSE ALL
  173. SET PRINT OFF
  174. SET PRINT TO 1
  175. ERASE
  176. SET HEADING TO
  177. SET HEADING2 TO
  178. SET FOOTER TO
  179. SET PAGENO TO 1
  180. SET CONSOLE ON
  181. SET TALK ON
  182. RETURN
  183. ə